/*
 * Copyright 2017-2101 Innel.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.hykj.xxltest.controller;

import com.github.pagehelper.PageInfo;
import com.hykj.xxltest.base.AppBack;
import com.hykj.xxltest.base.RequiresRole;
import com.hykj.xxltest.model.OrderlineModel;
import com.hykj.xxltest.service.OrderlineService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;

/**
 * 
 * @author innel
 * @date 2018-07-12 17:50:45
 */
@Controller
@RequestMapping("/orderline")
@Api(description = "")
public class OrderlineController {

    private static final Logger logger = Logger.getLogger(OrderlineController.class);

    @Autowired
    private OrderlineService orderlineService;

    /**
    * 列表
    */
    @RequestMapping("/list")
    @ResponseBody
    @RequiresRole(role = "1")
    @ApiOperation(
            value = "获取列表",
            notes = "备注：",
            response = OrderlineModel.class,
            httpMethod = "POST")
    public AppBack list(@ApiParam(value = "每页显示个数,不填默认10")
                        @RequestParam(required = false)
                                Integer pageSize,
                                                                @ApiParam(value = "订单父id")
                        @RequestParam(required = false)
                        Integer orderid,
                                                        @ApiParam(value = "产品Id")
                        @RequestParam(required = false)
                        Integer productid,
                                                        @ApiParam(value = "产品数量")
                        @RequestParam(required = false)
                        Integer productnum,
                                                                                                @ApiParam(value = "规格id")
                        @RequestParam(required = false)
                        Integer specid,
                                                                                                                @ApiParam(value = "开始时间 范例 2017-11-06 16:02:11", hidden = true)
                        @RequestParam(required = false)
                                String startTime,
                        @ApiParam(value = "截止时间 格式 YYYYMMDD 也可以", hidden = true)
                        @RequestParam(required = false)
                                String endTime,
                        @ApiParam(value = "搜索关键字")
                        @RequestParam(required = false)
                                String searchKey,
                        @ApiParam(value = "是否是后台列表请求", hidden = true)
                        @RequestParam(required = false)
                                String backList,
                        @ApiParam(value = "是否简单显示", hidden = true)
                        @RequestParam(required = false)
                                String noD,
                        @ApiParam(value = "不填不分页")
                        @RequestParam(required = false)
                                Integer page) {
        Map<String, Object> params = new HashMap<>();
        params.put("pageSize", pageSize);
                                                        params.put("orderid", orderid);
                                                params.put("productid", productid);
                                                params.put("productnum", productnum);
                                                                                        params.put("specid", specid);
                                                                                        params.put("startTime", startTime);
        params.put("endTime", endTime);
        params.put("searchKey", searchKey);
        params.put("noD", noD);
        params.put("backList", backList);
        if (page == null) {
            return new AppBack(orderlineService.getDList(params));
        }
        PageInfo<OrderlineModel> p = orderlineService.getDList(params, page);
        return new AppBack(p);
    }


    /**
     * 信息
     */
    @RequestMapping("/info")
    @ResponseBody
    @RequiresRole(role = "1")
    @ApiOperation(
            value = "获取",
            notes = "备注：",
            response = OrderlineModel.class,
            httpMethod = "POST")
    public AppBack info( 
            @ApiParam(value = "的ID", required = true)
            @RequestParam Integer orderlineId) {
            OrderlineModel orderline = orderlineService.getByIdD(orderlineId);
        if (orderline==null){
            return new AppBack(-1, "当前资源不存在");
        }
        return new AppBack(orderline);
    }

    /**
     * 保存
     */
    @RequestMapping("/save")
    @ResponseBody
    @RequiresRole(role = "1")
    @ApiOperation(
            value = "保存",
            notes = "备注：",
            httpMethod = "POST")
    public AppBack save(                                         
                         @ApiParam(value = "订单父id", required = true)
                         @RequestParam
                Integer orderid,

                                
                         @ApiParam(value = "产品Id", required = true)
                         @RequestParam
                Integer productid,

                                
                         @ApiParam(value = "产品数量", required = true)
                         @RequestParam
                Integer productnum,

                                
                         @ApiParam(value = "产品价格", required = true)
                         @RequestParam
                                 BigDecimal price,

                                
                         @ApiParam(value = "子订单总价", required = true)
                         @RequestParam
                BigDecimal amount,

                                
                         @ApiParam(value = "规格id", required = true)
                         @RequestParam
                Integer specid,

                                
                         @ApiParam(value = "重量", required = true)
                         @RequestParam
                Double weight,

                                
                         @ApiParam(value = "规格名称", required = true)
                         @RequestParam
                String specname,

                                
                         @ApiParam(value = "规格价格", required = true)
                         @RequestParam
                BigDecimal specprice,

                                             @ApiParam(value = "选填参数控制 默认不填", hidden = true)
                         @RequestParam(required = false)
                                 Integer extra) {
            OrderlineModel orderline= new OrderlineModel();
                                        
                    orderline.setOrderid( orderid);

                                
                    orderline.setProductid( productid);

                                
                    orderline.setProductnum( productnum);

                                
                    orderline.setPrice( price);

                                
                    orderline.setAmount( amount);

                                
                    orderline.setSpecid( specid);

                                
                    orderline.setWeight( weight);

                                
                    orderline.setSpecname( specname);

                                
                    orderline.setSpecprice( specprice);

                    
            orderlineService.create(orderline);
        return new AppBack();

    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    @ResponseBody
    @RequiresRole(role = "1")
    @ApiOperation(
            value = "更新",
            notes = "备注：",
            httpMethod = "POST")
    public AppBack update(                                                                  @ApiParam(value = "订单父id")
                          @RequestParam(required = false)
                Integer orderid,
                                                          @ApiParam(value = "产品Id")
                          @RequestParam(required = false)
                Integer productid,
                                                          @ApiParam(value = "产品数量")
                          @RequestParam(required = false)
                Integer productnum,
                                                          @ApiParam(value = "产品价格")
                          @RequestParam(required = false)
                BigDecimal price,
                                                          @ApiParam(value = "子订单总价")
                          @RequestParam(required = false)
                BigDecimal amount,
                                                          @ApiParam(value = "规格id")
                          @RequestParam(required = false)
                Integer specid,
                                                          @ApiParam(value = "重量")
                          @RequestParam(required = false)
                Double weight,
                                                          @ApiParam(value = "规格名称")
                          @RequestParam(required = false)
                String specname,
                                                          @ApiParam(value = "规格价格")
                          @RequestParam(required = false)
                BigDecimal specprice,
                                              @ApiParam(value = "的ID", required = true)
                          @RequestParam int orderlineId) {
            OrderlineModel orderline= new OrderlineModel();
                                                            orderline.setOrderid( orderid);
                                                    orderline.setProductid( productid);
                                                    orderline.setProductnum( productnum);
                                                    orderline.setPrice( price);
                                                    orderline.setAmount( amount);
                                                    orderline.setSpecid( specid);
                                                    orderline.setWeight( weight);
                                                    orderline.setSpecname( specname);
                                                    orderline.setSpecprice( specprice);
                                orderline.setId(orderlineId);

            orderlineService.update(orderline);
        return new AppBack();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    @ResponseBody
    @RequiresRole(role = "1")
    @ApiOperation(
            value = "删除",
            notes = "备注：",
            httpMethod = "POST")
    public AppBack delete(                          @ApiParam(value = "的ID", required = true)
                          @RequestParam
                                  int  orderlineId) {

                        orderlineService.deleteById( orderlineId);
                return new AppBack();
    }

}
